|
RAIS
3.2
|
00001 using System; 00002 using System.Collections.Generic; 00003 using System.Text; 00004 using RAIS.DataAccessLayer; 00005 using RAIS.Common.RADEVSearchClasses; 00006 namespace RAIS.ApplicationLogicLayer 00007 { 00008 public class RADEVSearchResult 00009 { 00010 #region Fields 00011 string searchCommandTemp = " SELECT * FROM [RADEV Search - Result]({1}) {0} "; 00012 string _tableName = "result"; 00013 StringBuilder searchCommand = null; 00014 int _userId; 00015 #endregion 00016 #region Constructors 00017 00018 00019 00020 00021 private RADEVSearchResult(int userId) 00022 { 00023 _userId = userId; 00024 } 00030 public RADEVSearchResult(int radevid, int userId) 00031 : this(userId) 00032 { 00033 searchCommand = new StringBuilder(string.Format(searchCommandTemp, _tableName,userId) + " where " + _tableName + ".[ID]=" + radevid.ToString()); 00034 } 00041 public RADEVSearchResult(List<RADEVSearchCriteria> criterias, int userId, bool isOR) 00042 : this(userId) 00043 { 00044 searchCommand = new StringBuilder(string.Format(searchCommandTemp, _tableName, userId)); 00045 00046 if (!isOR) 00047 { 00048 foreach (RADEVSearchCriteria criteria in criterias) 00049 searchCommand.Append(string.Format(criteria.GetFilterString(isOR), "result")); 00050 } 00051 else 00052 { 00053 if (criterias.Count != 0) 00054 { 00055 bool firstFilter = true; 00056 searchCommand.Append(" join ( "); 00057 foreach (RADEVSearchCriteria criteria in criterias) 00058 { 00059 if (!firstFilter) 00060 searchCommand.Append(" union "); 00061 searchCommand.Append(criteria.GetFilterString(isOR)); 00062 firstFilter = false; 00063 } 00064 searchCommand.Append(" ) filters on filters.ID=result.id"); 00065 } 00066 } 00067 } 00075 public RADEVSearchResult(int radevid, List<RADEVSearchCriteria> criterias, int userId, bool isOR) 00076 : this(userId) 00077 { 00078 searchCommand = new StringBuilder(string.Format(searchCommandTemp, _tableName, userId)); 00079 00080 if (!isOR) 00081 { 00082 foreach (RADEVSearchCriteria criteria in criterias) 00083 searchCommand.Append(string.Format(criteria.GetFilterString(isOR), "result")); 00084 searchCommand.Append(" join (select ID from (" + 00085 string.Format(searchCommandTemp, _tableName, userId) + " where " + _tableName + ".[ID]=" + radevid.ToString() + ") radevid) radevid on radevid.ID=result.id "); 00086 } 00087 else 00088 { 00089 bool firstFilter = true; 00090 searchCommand.Append(" join ( "); 00091 foreach (RADEVSearchCriteria criteria in criterias) 00092 { 00093 if (!firstFilter) 00094 searchCommand.Append(" union "); 00095 searchCommand.Append(criteria.GetFilterString(isOR)); 00096 firstFilter = false; 00097 } 00098 if (!firstFilter) 00099 searchCommand.Append(" union "); 00100 searchCommand.Append(" select ID from (" + 00101 string.Format(searchCommandTemp, _tableName, userId) + " where " + _tableName + ".[ID]=" + radevid.ToString() + ") radevid "); 00102 searchCommand.Append(" ) filters on filters.ID=result.id"); 00103 } 00104 } 00105 00106 #endregion 00107 #region Properties 00108 00109 00110 00111 public string SearchCommand 00112 { 00113 get 00114 { 00115 return searchCommand != null ? searchCommand.ToString() : ""; 00116 } 00117 } 00118 #endregion 00119 #region Public methods 00120 00121 00122 00123 00124 00125 00126 public static RADEVSearchResult LoadCriterias(int id, int userId) 00127 { 00128 RADEVSearchResult searchResult = new RADEVSearchResult(userId); 00129 string savedSearch = DataAccessLayer.RADEVSearch.GetSavedSearch(id); 00130 int start = savedSearch.IndexOf('('); 00131 int end = savedSearch.IndexOf(')'); 00132 00133 searchResult.searchCommand = new StringBuilder(); 00134 searchResult.searchCommand.Append(savedSearch.Substring(0, start + 1)); 00135 searchResult.searchCommand.Append(userId); 00136 searchResult.searchCommand.Append(savedSearch.Substring(end)); 00137 00138 return searchResult; 00139 } 00144 public List<RADEVRow> GetResult() 00145 { 00146 return DataAccessLayer.RADEVSearch.GetRadevSearchResult(searchCommand.ToString()); 00147 } 00148 #endregion 00149 } 00150 }